package com.siwei.eqi.pojo.entity;

import com.baomidou.mybatisplus.annotation.*;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;

/**
 * 子任务表实体类
 */
@Data
@TableName("index_calculation_sub_task")
public class IndexCalculationSubTaskEntity implements Serializable {

    private static final long serialVersionUID = 1L;

    /**
     * 子任务ID，主键，自增
     */
    @ApiModelProperty(value = "子任务ID，主键，自增")
    @TableId(value = "sub_task_id", type = IdType.ASSIGN_ID)
    private Long subTaskId;

    /**
     * 父任务ID，关联到主任务表
     */
    @ApiModelProperty(value = "父任务ID，关联到主任务表")
    @TableField(value = "parent_task_id")
    private Long parentTaskId;

    /**
     * 计算区域
     */
    @ApiModelProperty(value = "计算区域")
    @TableField(value = "calculation_area")
    private String calculationArea;

    /**
     * 计算状态
     */
    @ApiModelProperty(value = "计算状态")
    @TableField(value = "calculation_status")
    private String calculationStatus;

    /**
     * 完成度
     */
    @ApiModelProperty(value = "完成度")
    @TableField(value = "completion_percentage")
    private String completionPercentage;

    /**
     * 计算结果，JSONB类型，用于存储结构化数据
     */
    @ApiModelProperty(value = "计算结果，JSONB类型，用于存储结构化数据")
    @TableField(value = "calculation_result")
    private BigDecimal calculationResult;

    /**
     * 历史结果，JSONB类型，用于存储结构化数据
     */
    @ApiModelProperty(value = "历史结果，JSONB类型，用于存储结构化数据")
    @TableField(value = "historical_result")
    private String historicalResult;

    /**
     * 变异系数
     */
    @ApiModelProperty(value = "变异系数")
    @TableField(value = "variation_coefficient")
    private BigDecimal variationCoefficient;

    /**
     * 创建时间，默认为当前时间
     */
    @ApiModelProperty(value = "创建时间，默认为当前时间")
    @TableField(value = "created_at", fill = FieldFill.INSERT)
    private Date createdAt;

    /**
     * 更新时间，默认为当前时间
     */
    @ApiModelProperty(value = "更新时间，默认为当前时间")
    @TableField(value = "updated_at", fill = FieldFill.INSERT_UPDATE)
    private Date updatedAt;
}
